var element, layer, form, table, layedit, upload;

$(function () {
    if (localStorage.getItem("backstage_token") == null) {
        window.location.href = "/html/login.html";
    } else {//进入页面
        //页面权限判断
        $.ajax({
            headers: {
                "Authorization": localStorage.getItem("backstage_token")
            },
            url: backstage_domain + "/user/getuserinfo",//提交的路径
            type: 'get',//提交方式
            dataType: "json",//返回的类型  Text文本
            async: false,
            success: function (result, response, xhr) {
                let token = xhr.getResponseHeader("Authorization");
                if (token != null) {
                    localStorage.setItem("backstage_token", token);
                }
                if (result.status == 403) {
                    window.location.href = "/html/login.html";
                } else if (result.status == 200) {
                    //展示用户信息
                    $("#userinfo").text(result.name);
                    // let vue_nav = new Vue({
                    //     el: "#vue-nav",
                    //     data: {
                    //         user_role: result.role.substring("ROLE_".length),
                    //     }
                    // });
                } else {
                    window.location.href = "/html/login.html";
                }
            },
            error: function () {
                window.location.href = "/html/login.html";
            }
        });
        !function () {
            element = layui.element;
            layer = layui.layer;
            form = layui.form;
            table = layui.table;
            layedit = layui.layedit;
            upload = layui.upload;
            element.render();
        }();
        $.ajaxSetup({
            headers: {
                "Authorization": localStorage.getItem("backstage_token")
            },
            traditional: true,
        });
    }

//===========================================================================

    //表单校验规则
    form.verify({
        //密码校验
        password: [/^[\S|\s]{5,20}$/, '密码为5到20位'],
        //重复密码校验
        checkpassword: function (value, item) { //value：表单的值、item：表单的DOM对象
            if ($("#newpassword").val() !== $("#password").val()) {
                return '密码不一致';
            }
        },
        //admin insert表单
        //用户名校验
        username: [/^[a-zA-Z][a-zA-Z0-9_]{4,15}$/, '用户名为5到16位（字母开始，其他可使用数字，下划线)'],

        onlynumber: [/^[1-9]\d*$/, '只能为整数'],

        word: [/^[a-zA-Z]+$/, '只能为英文'],

        price: [/((^[1-9]\d*)|^0)(\.\d{0,2})?$/, '格式不正确']

    });
//===========================================================================
    var updatenameindex;
    //绑定用户修改名字事件
    $("#updatename").click(function () {
        updatenameindex = layer.open({
            type: 1,
            title: "修改名字",
            content: $("#update_name_html"),
            area: ['400px', '200px'],
            success: function (layero, index) {
                $("#name").val("");
            }
        });
    });

    form.on('submit(updatenamesubmit)', function (data) {
        layer.msg("网络请求中...");
        myajax("/user/updatename", "post", {"name": $("#name").val()}, function (result) {
            if (result.status == 200) {
                layer.msg("修改成功");
                $("#userinfo").text($("#name").val());
                layer.close(updatenameindex);
            } else {
                layer.msg("修改失败");
            }
        }, function () {
            layer.msg("网络错误");
        });
        return false;
    });


    var updatepasswordindex;
    //绑定用户修改密码事件
    $("#updatepassword").click(function () {
        updatepasswordindex = layer.open({
            type: 1,
            title: "修改密码",
            content: $("#update_password_html"),
            area: ['400px', '250px'],
        });
    });

    form.on('submit(updatesubmit)', function (data) {
        layer.msg("网络请求中...");
        myajax("/user/updatepassword", "post", {"password": $("#newpassword").val()}, function (result) {
            if (result.status == 200) {
                layer.msg("修改成功");
                layer.close(updatepasswordindex);
            } else {
                layer.msg("修改失败");
            }
        }, function () {
            layer.msg("网络错误");
        });
        return false;
    });
//===================================================================================================
    //绑定用户退出事件
    $("#logout").click(function () {
        localStorage.removeItem("backstage_token");
        window.location.href = "/html/login.html";
    });
//=========================================================================================================
    //导航点击事件监听
    element.on('nav(admin-nav)', function (elem) {
        //根据导航name创建tab选项卡
        var tab_name = elem.text();
        var tab_id = elem.attr("name");
        if (tab_id == null) {
            return;
        }
        if (tab_id == "deleteAll") {
            $.each($(".layui-tab-title li[lay-id]"), function () {
                content_tab.tabDelete($(this).attr("lay-id"));
            });
            element.render('nav(admin-nav)');
            return;
        }
        //这时会判断右侧.layui-tab-title属性下的有lay-id属性的li的数目，即已经打开的tab项数目
        if ($(".layui-tab-title li[lay-id]").length <= 0) {
            //如果比零小，则直接打开新的tab项
            content_tab.tabAdd(tab_id, tab_name);
        } else {
            //否则判断该tab项是否以及存在
            var isData = false; //初始化一个标志，为false说明未打开该tab项 为true则说明已有
            $.each($(".layui-tab-title li[lay-id]"), function () {
                //如果点击左侧菜单栏所传入的id 在右侧tab项中的lay-id属性可以找到，则说明该tab项已经打开
                if ($(this).attr("lay-id") == tab_id) {
                    isData = true;
                }
            });
            if (!isData) {
                //标志为false 新增一个tab项
                content_tab.tabAdd(tab_id, tab_name);
            }
        }
        //最后不管是否新增tab，最后都转到要打开的选项页面上
        content_tab.tabChange(tab_id);

    });

    var content_tab = {
        //在这里给绑定几项事件，后面调用这些事件
        tabAdd: function (id, name) {
            //初始化选项卡时，创建表格、填充数据
            if (!id.endsWith("__")) {
                element.tabAdd('content-tab', {
                    title: name,
                    content: '<table id="' + id + '" lay-filter="content' + id + '"></table>',
                    id: id
                });
                //渲染表格以及加载后续事件

                table_renderandload(id);
            } else {
                element.tabAdd('content-tab', {
                    title: name,
                    id: id
                });
                load_view_data[id]();
            }

        },
        tabChange: function (id) {
            element.tabChange('content-tab', id); //根据传入的id传入到指定的tab项

        },
        tabDelete: function (id) {
            element.tabDelete("content-tab", id);//删除
        }
    };

//==============================================================================

    //默认点击导航
    $("#vue-nav a:eq(0)").trigger("click");
    $("#vue-nav a[name]:eq(0)").trigger("click");

//==============================================================================

});

var tableInss = {};

//渲染表格以及加载后续事件
function table_renderandload(id) {

    //初始化表格头
    if (initTable[id] != null)
        initTable[id]();

    let renderOptions = get_render_options(id);
    if (id == 'word')
        renderOptions.defaultToolbar = ["exports"];
    //渲染表格
    tableInss[id] = table.render(renderOptions);

    //绑定（表格行内开关）事件
    if (tableSwitch[id] != null)
        tableSwitch[id]();


    //监听表头工具栏事件   查询和重置
    table.on('toolbar(content' + id + ')', function (obj) {
        selectAndReset(id, obj);
    });
    //监听行工具条
    table.on('tool(content' + id + ')', function (obj) {
        rowToolBar(id, obj);
    });

    //监听表单simpleinsert提交事件
    if (tableToolBarform_insertsubmit[id] != null) {
        tableToolBarform_insertsubmit[id]();
    }

}
